<script>
if (window.testRunner)
    testRunner.dumpEditingCallbacks();
</script>

<script>
function log(str) {
    var li = document.createElement("li");
    li.appendChild(document.createTextNode(str));
    var console = document.getElementById("console");
    console.appendChild(li);
}

function assert(bool) {
    if (!bool)
        log("Failure");
    else
        log("Success");
}
</script>
<p>This tests the endpoints of a DOM Range object made from a selection around certain types elements.  These endpoints shouldn't be at offsets inside nodes that aren't containers or text nodes.</p>
<div id="test">Hello <img src="../resources/abe.png"><object width="100"></object>world!<br>Hello World!</div>
<ul id="console"></ul>

<script>
var s = window.getSelection();
var e = document.getElementById("test");
var r;

if (window.testRunner)
    testRunner.dumpAsText();

// The textnode
s.setBaseAndExtent(e, 0, e, 1);
r = s.getRangeAt(0);
assert(r.startContainer == e);
assert(r.startOffset == 0);
assert(r.endContainer == e);
assert(r.endOffset == 1);

// The image
s.setBaseAndExtent(e, 1, e, 2);
r = s.getRangeAt(0);
assert(r.startContainer == e);
assert(r.startOffset == 1);
assert(r.endContainer == e);
assert(r.endOffset == 2);

// The <object>
s.setBaseAndExtent(e, 2, e, 3);
r = s.getRangeAt(0);
assert(r.startContainer == e);
assert(r.startOffset == 2);
assert(r.endContainer == e);
assert(r.endOffset == 3);

// The <br>
s.setBaseAndExtent(e, 4, e, 5);
r = s.getRangeAt(0);
assert(r.startContainer == e);
assert(r.startOffset == 4);
assert(r.endContainer == e);
assert(r.endOffset == 5);

</script>
